package com.cskaoyan.wordmemorize.dao.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cskaoyan.wordmemorize.dao.entity.UserFavoriteDO;
import com.cskaoyan.wordmemorize.dao.entity.UserVocExampleSentenceDO;
import com.cskaoyan.wordmemorize.dao.entity.VocChapterDO;
import com.cskaoyan.wordmemorize.dao.entity.VocDO;
import groovyjarjarantlr4.v4.runtime.misc.Nullable;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface VocMapper extends BaseMapper<VocDO> {
    Page<VocDO> getVocabularyInfo(@Param("bookId") @Nullable Long bookId, @Param("chapterId") @Nullable Long chapterId,
                                  @Param("keyword") @Nullable String keyword, Page<VocDO> pageInfo);

    List<VocDO> selectAllWithAssociations();

    VocDO getVocDetail(@Param("userId") Long userId, @Param("vocId") Long vocId);

    List<UserVocExampleSentenceDO> getUserVocExampleSentence(
            @Param("userId") Long userId,
            @Param("vocId") Long vocId);

    //查询单词详情相关方法
    List<VocChapterDO> getChapterVocsOfUserBook(Long userId, String bookId, int offset, Integer count);

    int countChaptersInBook(String bookId);

    List<VocChapterDO> getChapterVocsOfUserBookNoPage(Long userId, String bookId);

    //无章节版
    List<VocDO> getVocsOfUserBook(@Param("userId") Long userId, @Param("bookId") Long bookId
            , @Param("offset") Integer offset, @Param("limit") Integer limit);
}
